package com.xuetang9.controller.a.way;

import com.xuetang9.domain.User;
import com.xuetang9.domain.Way;
import com.xuetang9.dto.InputDto;
import com.xuetang9.dto.a.ListRequestDTO;
import com.xuetang9.service.WayService;
import com.xuetang9.vo.JsonResultVO;
import com.xuetang9.vo.ListVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * @工能 处理前端用户模块增加处理请求
 * @作者 杜目杰
 * @时间 2020/5/12
 * @地点 公司
 * @版本 1.0.0
 * @版权 老九学堂
 */
@Controller
@CrossOrigin   //处理跨域请求问题
@ResponseBody //自动将Java对象转化为Json对象
public class WayController {
    // 创建请求处理对象
    @Autowired
    @Qualifier("WayServiceImplA")
    WayService wayService;

    /**
     * 根据请求数据进行数据更新
     * @param way 更新请求需要的数据
     * @return 更新的结果
     */
    @PostMapping("/way/update")
    public JsonResultVO updateWay( Way way){
        System.out.println(way);
        JsonResultVO<User> jsonResultVO = new JsonResultVO<>();
        // 保存执行添加的结果
        int result;
        // 传入为空直接返回空防止资源浪费
        if (way == null){
            jsonResultVO.setMessage("数据为空");
            jsonResultVO.setCode(500);
            return jsonResultVO;
        }
        // 创建业务执行层输入对象
        InputDto inputDto = new InputDto();
        inputDto.function = "修改线路";
        inputDto.date = way;
        // 执行添加并得到结果
        try{
            System.out.println(inputDto.date);
            result =  wayService.updateWay(inputDto);
        }catch (Exception e){
            jsonResultVO.setMessage("修改失败");
            jsonResultVO.setCode(500);
            return jsonResultVO;
        }
        // 根据结果返回对应的数字 101代表失败 100代表成功
        jsonResultVO.setMessage("修改成功");
        jsonResultVO.setCode(200);
        return jsonResultVO;
    }

    /**
     * 根据请求数据进行数据添加
     * @param way 添加请求需要的数据
     * @return 添加的结果
     */
    @PostMapping("/way/add")
    public JsonResultVO insertInto(Way way){
        JsonResultVO<User> jsonResultVO = new JsonResultVO<>();
        // 保存执行添加的结果
        int result;
        // 传入为空直接返回空防止资源浪费
        if (way == null){
            jsonResultVO.setMessage("数据为空");
            jsonResultVO.setCode(500);
            return jsonResultVO;
        }
        // 创建业务执行层输入对象
        InputDto inputDto = new InputDto();
        inputDto.function = "添加线路";
        inputDto.date = way;
        // 执行添加并得到结果
        try{
            System.out.println(inputDto.date);
            result =  wayService.insertWay(inputDto);
        }catch (Exception e){
            jsonResultVO.setMessage("添加失败");
            jsonResultVO.setCode(500);
            return jsonResultVO;
        }
        // 根据结果返回对应的数字 101代表失败 100代表成功
        jsonResultVO.setMessage("添加成功");
        jsonResultVO.setCode(200);
        return jsonResultVO;

    }
    /**
     *  处理查询线路信息请求
     * @param way 线路查询请求参数
     * @return 前端线路查询显示类容
     */
    @PostMapping("/way/query")
    public JsonResultVO listWayA(@RequestBody ListRequestDTO<Way> way){
        JsonResultVO<ListVO> jsonResultVO = new JsonResultVO<>();
        // 用来保存需要返回的数据
        ListVO listUserVO = null ;

        // 传入为空直接返回空防止资源浪费
        if (way == null){
            jsonResultVO.setMessage("数据为空");
            jsonResultVO.setCode(500);
            return jsonResultVO;
        }
        // 创建业务执行层输入对象
        InputDto inputDto = new InputDto();
        inputDto.function = "查询线路";
        inputDto.date = way;
        // 得到显示数据
        try{
            listUserVO = wayService.listWayA(inputDto);
        }catch (Exception e){
            jsonResultVO.setMessage("查询报错");
            jsonResultVO.setCode(500);
            return jsonResultVO;
        }
        //将显示数据放入返回前端的请求返回对象中
        jsonResultVO.setData(listUserVO);
        jsonResultVO.setCode(200);
        return  jsonResultVO;
    }

}
